package com.niiwoo.civet.trade.dto.response;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 信用借-我的借款列表.
 */
@Getter
@Setter
public class MyCreditLoanResponseDTO implements Serializable {
    private static final long serialVersionUID = -304168741202661437L;

    /**
     * 标的ID
     */
    private Long projectId;

    /**
     * 标的标题
     */
    private String projectTitle;

    /**
     * 标的状态
     * 1审核中、2筹款中、3还款中、4已结清、5流标
     */
    private Byte status;

    /**
     *项目状态(0=申请中, 1=申请尽调中, 2=尽调中, 31= 尽掉不通过, 3=担保中, 32=担保未满, 4=投标中, 5=成标,
     *  33=投标未满, 34=手动流标, 43=逾期, 6=还款成功, 41=黄色警告, 42=红色警告, 44=坏账, 45=坏账已结清)
     */
    private Byte projectStatus;

    /**
     * 期限（月）
     */
    private Integer deadline;

    /**
     * 标的当前期数
     */
    private Integer currentPeriods;

    /**
     * 总期数（还款）
     */
    private Integer totalPeriods;

    /**
     * 标的发布时间
     */
    private Date publishTime;

    /**
     * 借款利率
     */
    private BigDecimal borrowRate;

    /**
     * 标的金额
     */
    private BigDecimal contractAmount;

    /**
     * 当前罚息.
     */
    private BigDecimal currentPenalty;

    /**
     * 当前逾期金额.
     */
    private BigDecimal  currentOverduePayout;

    /**
     * 总待还金额.
     */
    private BigDecimal pendingRepaymentTotalAmount;

    /**
     * 最后一次还款计划的预计还款时间
     */
    private Date refundDate;


    /**
     * 合同地址
     */
    private String contractUrl;


    /**
     * 当前应还平台管理费.
     */
    private BigDecimal currentPlatformManagerFee;

    /**
     * 当前应还催收服务费.
     */
    private BigDecimal currentDunningServiceFee;

    /**
     * 当前应还信用保费.
     */
    private BigDecimal currentCreditGuaranteeFee;

    /**
     * 项目备注信息.
     */
    private String projectRemark;

    // 获取当前项目总的逾期金额
    @JSONField(serialize = false)
    public BigDecimal getCurrentOverdueAmount() {
        return this.currentPenalty.add(this.currentOverduePayout).add(this.currentPlatformManagerFee)
                .add(this.currentDunningServiceFee);
    }

}
